home *** CD-ROM | disk | FTP | other *** search
/ Aminet 16 / Aminet 16 (1996)(GTI - Schatztruhe)[!][Dec 1996].iso / Aminet / dev / src / wangisrc.lha / wangi / z / Tock / Tock.c < prev   
C/C++ Source or Header  |  1995-12-17  |  4KB  |  173 lines

  1. /***************************************************************************
  2.  * Tock.c
  3.  *
  4.  * Tock, Copyright ©1995 Lee Kindness.
  5.  *
  6.  * This source is for example purposes...
  7.  *
  8.  */
  9.  
  10. /* All our includes are in this file */
  11. #include "gst.c"
  12.  
  13. /* Version stuff... */
  14. #include "Tock_rev.h"
  15.  
  16. /* Libraries used, don't auto open them SAS/C :) */
  17. extern struct Library *IntuitionBase = NULL;
  18. extern struct Library *CxBase = NULL;
  19. extern struct Library *GadToolsBase = NULL;
  20. extern struct Library *LocaleBase = NULL;
  21.  
  22. struct Data
  23. {
  24.     struct Library       *d_IntuitionBase,
  25.                          *d_CxBase,
  26.                           *d_GadToolsBase,
  27.                           *d_LocaleBase,
  28.      ULONG                 d_Secs;         /* Update every x seconds */
  29.      STRPTR                d_ScreenName;   /* Open on screen with this name */
  30.      struct Window        *d_Window;       /* The created window */
  31.      WORD                  d_Width,        /* Width of window, -1 = autosize */
  32.                            d_TopEdge,      /* Position of topedge */
  33.                            d_LeftEdge;     /* Position of leftedge */
  34.     Struct List           d_Formats;      /* List of Locale format templates */
  35.     struct Locale        *d_Locale;       /* Locale in use */
  36.     struct NotifyRequest *d_OurPrefN,     /* Notification of our prefs change */
  37.                          *d_SysPrefN;     /* Systems prefs change */
  38. };
  39.  
  40. #define ln_Format ln_Name
  41.      
  42.  
  43.  
  44. struct Data *OpenLibs(void);
  45. void CloseLibs(struct Data *);
  46.  
  47.  
  48. char vertag[] = VERSTAG;
  49.  
  50. /***************************************************************************
  51.  * main() --
  52.  */
  53. int main(int argc, char **argv)
  54. {
  55.     int ret = RETURN_FAIL;
  56.     BOOL Active = TRUE;
  57.     
  58.     /* check version */
  59.     if (OpenLibs()) 
  60.     {
  61.         struct NewBroker nb = 
  62.         {
  63.             NB_VERSION,
  64.             "Tock",
  65.             VERS " (" DATE ") by Lee Kindness",
  66.             "locale-tasTic clOCK ;)",
  67.             NBU_UNIQUE | NBU_NOTIFY,
  68.             COF_SHOW_HIDE,
  69.             -1,
  70.             NULL,
  71.             0
  72.         };
  73.         CxObj *broker;
  74.         nb.nb_Pri = 0;
  75.                 
  76.         if ((nb.nb_Port = CreateMsgPort()) && (broker = CxBroker(&nb, NULL))) 
  77.         {
  78.             ULONG sig, sret;
  79.             BOOL finished;
  80.             
  81.             ActivateCxObj(broker, 1L);
  82.             
  83.             ret = RETURN_OK;
  84.             
  85.             finished = FALSE;
  86.             sig = 1 << nb.nb_Port->mp_SigBit;
  87.                     
  88.             do 
  89.             {
  90.                 sret = Wait(SIGBREAKF_CTRL_C | sig);
  91.                 if (sret & sig) 
  92.                 {
  93.                     CxMsg *msg;
  94.                     while(msg = (CxMsg *)GetMsg(nb.nb_Port)) 
  95.                     {
  96.                         switch(CxMsgType(msg)) 
  97.                         {
  98.                             case CXM_COMMAND:
  99.                                 switch(CxMsgID(msg)) 
  100.                                 {
  101.                                     case CXCMD_DISABLE:
  102.                                         ActivateCxObj(broker, 0L);
  103.                                         Active = FALSE;
  104.                                         break;
  105.                                     case CXCMD_ENABLE:
  106.                                         ActivateCxObj(broker, 1L);
  107.                                         Active = TRUE;
  108.                                         break;
  109.                                     case CXCMD_KILL:
  110.                                         finished = TRUE;
  111.                                         break;
  112.                                     //case CXCMD_UNIQUE:
  113.                                     //    finished = ShowWindow();
  114.                                     //    break;
  115.                                     //case CXCMD_APPEAR:
  116.                                     //    finished = ShowWindow();
  117.                                     //    break;
  118.                                 }
  119.                                 break;
  120.                         }
  121.                         ReplyMsg((struct Message *)msg);
  122.                     }
  123.                 }
  124.                 if (sret & SIGBREAKF_CTRL_C)
  125.                     finished = TRUE;
  126.             } while (!finished);
  127.             
  128.             ActivateCxObj(broker, 0L);
  129.             DeleteCxObj(broker);
  130.             DeletePort(nb.nb_Port);
  131.         }
  132.     }
  133.     CloseLibs();
  134.     return(ret);
  135. }
  136.  
  137.  
  138. /***************************************************************************
  139.  * OpenLibs() -- Open all used libraries
  140.  */
  141. BOOL OpenLibs(void)
  142. {
  143.     struct Data *d = NULL;
  144.     
  145.     if( d = AllocVec(sizeof(struct Data), MEMF_CLEAR) )
  146.     {
  147.         d->d_IntuitionBase = (struct IntuitionBase *)OpenLibrary("intuition.library", 37);
  148.         d->d_CxBase = OpenLibrary("commodities.library", 37);
  149.         d->d_GadToolsBase = OpenLibrary("gadtools.library", 37);
  150.         d->d_LocaleBase = (struct LocaleBase *)OpenLibrary("locale.library", 38);
  151.         ret = ((d->d_IntuitionBase) && 
  152.                (d->d_CxBase) && 
  153.                (d->d_GadToolsBase) &&
  154.                (d->d_LocaleBase));
  155.     return(ret);
  156. }
  157.  
  158.  
  159. /***************************************************************************
  160.  * CloseLibs() -- Close all libraries
  161.  */
  162. void CloseLibs(void)
  163. {
  164.     if (LocaleBase)
  165.         CloseLibrary((struct Library *)LocaleBase);
  166.     if (GadToolsBase)
  167.         CloseLibrary(GadToolsBase);
  168.     if (CxBase)
  169.         CloseLibrary(CxBase);
  170.     if (IntuitionBase)
  171.         CloseLibrary((struct Library *)IntuitionBase);
  172. }
  173.